Android常见问题 · XInstall

您所在的位置:网站首页 android os一直唤醒 Android常见问题 · XInstall

Android常见问题 · XInstall

2024-07-18 03:11:05| 来源: 网络整理| 查看: 265

Android 常见问题1. 每次调用 getInstallParam 方法都会回调,会触发业务重复调用,怎么办?2. App有多个进程时,多次调用 XInstall.init,导致安装参数获取不到?3. 应用在后台时,通过网页拉起应用无法正常获取到参数4. 如何在代码混淆时忽略 XInstall sdk?5. 如何提高android用户的下载体验和匹配精度?6. 网页尝试唤醒已经安装好的app时,会先出现是否打开app的提示,然后下载任务又会弹出,挡住打开app的提示窗口7. Android下载设置中不同下载方式的区别8. Android SDK导入常见问题9. 一键拉起/唤起App失败10. 已经下载应用但还是提示去下载11. 为什么安卓微信扫码以后没有去下载我的应用,而是去下载应用宝了?12. 在接入安卓中,很多同学会问,当Launcher 的Acrtivity 的LaunchMode 设置为 "singleTask", 如何让这个Activity 只在冷启动的时候显示,热启动的时候不显示?Android 常见问题 1. 每次调用 getInstallParam 方法都会回调,会触发业务重复调用,怎么办?

SDK内部将会一直保存安装数据,每次调用 getInstallParam 方法都会返回值,如果调用了 getInstallParam 并处理了自己的业务,后续不想再被触发,那么可以自己在业务调用成功时,设置一个标识,不再调用 getInstallParam 方法。

final SharedPreferences sp = getSharedPreferences("filename", MODE_PRIVATE); boolean isFirst = sp.getBoolean("isFirst", true); if (isFirst) { XInstall.getInstallParam(new XInstallListener() { @Override public void onInstallFinish(XAppData data, XAppError error) { //使用数据后,不想再调用,将isFirst设置为false sp.edit().putBoolean("isFirst", false).apply(); } }); } 2. App有多个进程时,多次调用 XInstall.init,导致安装参数获取不到?

当App存在多个进程,并且 XInstall 是在Application的onCreate方法中初始化时,会因为多次调用Application的onCreate方法,导致 XInstall 初始化方法触发多次,从而导致安装参数获取不到。 使用以下代码判断当前进程是否是应用的主进程,然后只在主进程中调用 XInstall.init 方法

public boolean isMainProcess(){ int pid = android.os.Process.myPid(); ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) { if (appProcess.pid == pid) { return getApplicationInfo().packageName.equals(appProcess.processName); } } return false; } 3. 应用在后台时,通过网页拉起应用无法正常获取到参数

检查对应activity的onNewIntent生命周期方法内是否添加了唤醒参数获取方法。如果未添加,会导致应用存在后台时,网页拉起应用后无法正常获取到唤醒参数 (Android在app未在后台的情况下,网页直接唤醒打开后,唤醒Activity被杀掉后,应用退回到后台,进入浏览器后不刷新,网页再次点击按钮尝试唤醒,部分浏览器会出现仅将app从后台切换到前台,并不会再次唤醒对应Activity,而且该情况下,切换到前台时的Activity中未能在各个生命周期中获取到唤醒的intent信息。 经过验证,该现象为浏览器的机制,和是否使用 XInstall sdk无关。 【测试:当app仅为一个Activity构成时,即MainActivity为唤醒Activity,按照上述流程不杀掉Activity的情况下切换到后台,再次唤醒,不会触发onCreat、onNewIntent生命周期,但是会触发onResume生命周期,此时可以获取到唤醒的intent信息】 存在上述现象的浏览器:华为系统浏览器、QQ浏览器、uc浏览器、欧朋浏览器、搜狗浏览器等 每次都会重新唤醒scheme标签对应的activity的浏览器:小米系统浏览器、google浏览器、三星浏览器、360浏览器等)

4. 如何在代码混淆时忽略 XInstall sdk?

在proguard文件中添加配置:

-dontwarn com.shubao.xinstall.** -keep class com.shubao.xinstall.** {*;} -dontwarn com.xinstall.** -keep class com.xinstall.** {*;} 5. 如何提高android用户的下载体验和匹配精度?

尽量选择安装包托管在 XInstall 平台下载,这样对下载体验和参数获取精度会有很大帮助。

6. 网页尝试唤醒已经安装好的app时,会先出现是否打开app的提示,然后下载任务又会弹出,挡住打开app的提示窗口

该问题是由于在点击按钮触发wakeupinstall方法时,js会先尝试执行唤醒操作,然后执行延时下载操作。但因为js无法判断对应的app是否已安装,就会出现唤醒后面的下载会继续执行,从而出现打开app的提示后又出现下载任务提示。

7. Android下载设置中不同下载方式的区别

(1)托管APK:下载上传到XInstall控制台的apk包,可以自行选择对应的安装包文件。 (2)外部APK:可以填写apk安装包下载地址、下载页面(包含第三方平台的地址)。

8. Android SDK导入常见问题 8.1 build.gradle配置问题

默认Android侧边栏管理中模式中是看不到lib目录的,导入项目时候需要左上角切换到project模式,在src文件夹下找到build.gradle进行配置,如下图

8.2 minSdkVersion支持问题

Xinstall要求最低的兼容的版本minSdkVersion是19,如果如下提示

说明是SDK版本设置过低。直接修改build.gradle中配置minSdkVersion 19即可。如下图

8.3 集成后编译无法通过问题

这是因为代码还没有链接的关系,重启开发工具Androidstudio或重新加载即可

9. 一键拉起/唤起App失败

90%以上的唤起失败问题,可以通过下面方式排查快速解决

在集成SDK以后,原来手机上的App需要重新卸载后再次安装才能唤起成功

是否是模拟器,暂不支持模拟器一键拉起,请用真机测试

SDK是否集成成功,可以先在Android-集成-上传安装包底部选择测试,用Xinstall页面进行测试,如果这个页面也不能跳转,说明安卓SDK没有对接成功。如果能跳转,而自己页面不能跳转,说明自己页面的Web SDK集成不对,需要排查下。主要是scheme配置正确

浏览器首次拒绝导致无法跳转。部分浏览器,如果你在首次跳转时候选择了取消,那么下次点击唤起时候,浏览器将默认不再提示跳转。可以尝试恢复出厂设置,和清楚缓存来解决这个问题。如Via,小米手机自带浏览器,夸克浏览器

浏览器本身不允许跳转,如百度浏览器。

QQ/微信中限制,需要满足上架条件,微信需要上架应用宝,QQ需要上架应用包或本地应用市场,如华为手机就需要上架华为市场。见下图

10. 已经下载应用但还是提示去下载

由于浏览器权限限制,网页是无法判断手机是否已经安装了目标应用。为了保障首次下载客户能正常下载安装,正常需要每次点击安装后都需要提示安装

Xinstall通过体验优化,目前已经可以做到90%以上浏览器在手机已经下载时,不再提示下载,而是直接进行唤起。

但还是有少部分机型没法做到完全的适配,我们会首先尝试唤起应用,然后在一定时间间隔后提示下载

还有一种情况,是测试机在多次下载安装过程中,如果曾经在提示唤起时候选择过拒绝/取消跳转,这会导致之后部分浏览器不再给出唤起弹窗,如果这个情况,您可以尝试恢复浏览器出厂设置和清楚缓存来解决

11. 为什么安卓微信扫码以后没有去下载我的应用,而是去下载应用宝了?

这个是因为微信App限制的问题。微信在8月中旬对扫码下载(包括已经上架应用宝的)App进行了更新,任何下载需要先下载应用宝,需要先下载应用宝,然后会自动开始下载客户App。 如果App没上架应用宝Xinstall将会在微信内弹窗在浏览器打开选项。

12. 在接入安卓中,很多同学会问,当Launcher 的Acrtivity 的LaunchMode 设置为 "singleTask", 如何让这个Activity 只在冷启动的时候显示,热启动的时候不显示? val flags = intent.getFlags(); val flags2 = Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT if (flags.and(flags2) == 0) { setContentView(R.layout.activity_welcome) welcome.postDelayed({ WakeUpActivity.start(this) finish() },1500) } else { // 非第一次 会直接finish finish() }


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭